package com.dhcc.sds.task;

import com.dhcc.core.config.properties.SysProperties;
import com.dhcc.core.modules.system.dao.DictMapper;
import com.dhcc.core.modules.system.entity.Dict;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.io.File;
import java.util.List;

/**
 * @ClassName: EmptyFolderTask
 * @Description ：   清空指定文件夹定时任务
 * @Date: 2022年05月31日 下午1:59:19
 * @Author sunyingjie
 * @Version 1.0 DHC-SDS
 */
@Service("EmptyFolderTask")
public class EmptyFolderTask {
    @Autowired
    SysProperties sysPro;
    @Autowired
    DictMapper dictMapper;//基础字典
    /**
     *  emptyFolder.
     *  @Description：清空指定文件夹下文件
     *  @Author sunyingjie
     *  @Date:2019年11月28日下午2:27:50
     */
    public void emptyFolder() {
        //从基础字典里获取文件夹相对路径
        List<Dict> dictList = getFolderPath();
        for(Dict dict:dictList) {
            String fileRoot = sysPro.getSysHome() + dict.getKey();
            delFolder(fileRoot);
        }
    }
    /**
     *  delFolder.
     *  @Description：删除文件夹
     *  @Author sunyingjie
     *  @Date:2019年11月28日下午2:27:50
     */
    public static void delFolder(String folderPath) {
        try {
            delAllFile(folderPath); //删除完里面所有内容
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     *  delAllFile.
     *  @Description：删除指定文件夹下的所有文件
     *  @Author sunyingjie
     *  @Date:2019年11月28日下午2:27:50
     */
    public static boolean delAllFile(String path) {
        boolean flag = false;
        File file = new File(path);
        if (!file.exists()) {
            return flag;
        }
        if (!file.isDirectory()) {
            return flag;
        }
        String[] tempList = file.list();
        File temp = null;
        for (int i = 0; i < tempList.length; i++) {
            if (path.endsWith(File.separator)) {
                temp = new File(path + tempList[i]);
            } else {
                temp = new File(path + File.separator + tempList[i]);
            }
            if (temp.isFile()) {
                temp.delete();
            }
            if (temp.isDirectory()) {
                delAllFile(path + "/" + tempList[i]);//先删除文件夹里面的文件
                delFolder(path + "/" + tempList[i]);//再删除空文件夹
                flag = true;
            }
        }
        return flag;
    }

    /**
     * 获取文件夹路径
     * @Author wjf
     * @return
     */
    public List<Dict> getFolderPath(){
        List<Dict> dictList = dictMapper.selectDicByCode("folderPath");
        return dictList;
    }

    public static void main(String[] args) {
        String fileRoot = "/Users/sunyingjie/Documents/工作文件/项目/单病种/imedical/medical-web/sys-home/file_download/sds/case";
        delFolder(fileRoot);
        System.out.println("deleted");
    }
}
